1

/*

DML:数据库操作语言

    主要对表中的数据库进行 增删改

****增:插入一条记录

    insert into 表名 (列名1,列名2..) values (值1,值2..)

    注意: 1.列名可以在表中选择一列或者几列

        2.后面的值 必须和前面的列 一一对应

        3.在SQL中除了int类型的数据,其他数据必须用''或者""引起来

            我们推荐用单引号

        4.如果要插入的数据所有字段都有,那么以上的

           (列名1,列名2..) 可以省略

****删:删除一条记录

    格式: delete from 表名;//删除表中的所有记录

        delete from 表名 where条件;

****改:修改表中的记录信息

    update 表名 set 字段名 = 值;//把所有记录的该列都改了

    update 表名 set 字段名 = 值 where条件;

                

*/

向students 表中插入一个学生信息(id:001 name:李四 )

INSERT INTO students (sid,NAME) VALUES ('001','李四');

向students 表中插入一个学生信息(id:002 name:王五 age:18 )

INSERT INTO students (sid,NAME,sage) VALUES ('002','王五',18);

INSERT INTO students VALUES ('003','赵六',28);

删除students表中的记录

DELETE FROM students;

删除某一条记录

DELETE FROM students WHERE sid=3;# 这里条件sid=3不能写成 sid==3,sid.equals(3);

修改students表,把sage这一列的值 改为20

UPDATE students SET sage=20;

修改students表,把王五的sage这一列的值 改为 50

UPDATE students SET sage = 50 WHERE NAME='王五';# sid = 2

/*

DQL:查询数据库中的数据

    基本格式:

    select [distinct] *|列名1,列名2 from 表名;# 查询表中的所有列数据

    带有条件的查询 用关键字 where

    

    


*/

基本查询

SELECT * FROM product;

SELECT pname,price FROM product;

SELECT price FROM product;

SELECT DISTINCT price FROM product;

基本查询练习

1.查询所有的商品.

SELECT * FROM product;

2.查询商品名和商品价格.

SELECT pname,price FROM product;

3.去掉价格重复值.

SELECT DISTINCT price FROM product;

4.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.

SELECT price+10 FROM product;

5.别名查询.使用的关键字是as(as可以省略的).

SELECT price+10 AS 打折价格 FROM product;

SELECT price+10 打折价格 FROM product;

条件查询练习

查询商品名称为“花花公子”的商品所有信息:

SELECT * FROM product WHERE pname='花花公子';

查询价格为800商品

SELECT * FROM product WHERE price=800;

查询价格不是800的所有商品

SELECT * FROM product WHERE price <> 800;

SELECT * FROM product WHERE price > 800 OR price < 800;

SELECT * FROM product WHERE NOT (price=800);

查询商品价格大于60元的所有商品信息

SELECT * FROM product WHERE price > 60;

SELECT * FROM product WHERE NOT (price <= 60);

查询商品价格在200到1000之间所有商品

SELECT * FROM product WHERE price >= 200 AND price <=1000;

SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

查询商品价格是200或800的所有商品

SELECT * FROM product WHERE price IN (200,800);

SELECT * FROM product WHERE price = 200 OR price = 800;

查询含有'霸'字的所有商品

SELECT * FROM product WHERE pname LIKE '%霸%';

查询以'香'开头的所有商品

SELECT * FROM product WHERE pname LIKE '香%';

查询第二个字为'想'的所有商品

SELECT * FROM product WHERE pname LIKE '_想%';

查询没有分类的商品

SELECT * FROM product WHERE category_id IS NULL;

SELECT * FROM product where category_id = null;# 错误的 判断空 不能用"="

查询有分类的商品

SELECT * FROM product WHERE category_id IS NOT NULL;

SELECT * FROM product WHERE category_id <> NULL;# 错误的 判断不为空 不用"<>"

查询所有价格大于2000的电脑商品(catetory_id是c001)

或者价格大于2000的服装商品(catetory_id是c002)**

SELECT * FROM product WHERE (price > 2000 AND category_id = 'c001')

    OR (price > 2000 AND category_id = 'c002');

    

SELECT * FROM product WHERE price > 2000 AND category_id IN ('c001','c002');

/*

SQL语言的分类:

DDL:数据库定义语言

    他主要是对数据库,数据库表进行创建删除维护等

    关键字:create(创建),alter(修改),drop(删除), show(查)

        

DCL:数据库操纵/控制语言

    控制数据库访问权限

DML:数据库操作语言

    它主要是对表中的数据进行 增删改

    关键字:insert(增加),delete(删除),update(修改)等

    

DQL:数据库查询语言

    它主要是对表中的数据进行 查询

    关键字:select(查询) from(从)  where(条件)

    

*/

注释

-- 注释

SELECT * FROM users;

/*

DDL:数据库定义语言

    主要是操作数据库,操作数据库表

DDL之操作数据库:

    对数据库进行增删改查

****增:创建一个数据库

    create database 数据库名;//默认编号,安装的时候您选择的那个编号

    create database 数据库名 charset 编码;

删:删除一个数据库

    drop database 数据库名;

修:修改数据库名字很麻烦 

    修改正在使用的数据库

    use 数据库名;

查:

  查询正在使用的数据库:

    select database();

  查询所有的数据库

    show databases;

    


*/

增:创建一个数据库

CREATE DATABASE db297;

CREATE DATABASE db2971 CHARSET utf8;

删:删除一个数据库

DROP DATABASE db2971;

修改正在使用的数据库

USE jjj;

查询正在使用的数据库

SELECT DATABASE();

查询所有数据库

SHOW DATABASES;

查询某一个数据的详细信息

SHOW CREATE DATABASE db297;

/*

DDL之数据库表

对数据库表进行增删改查

****增:创建一个表

create table 表名(

    字段名1 数据类型1(长度) [约束],

    字段名2 数据类型2(长度) [约束]

    );

删:删除表

    drop table 表名;

查:查看表

    desc 表名; 查看一个表的详细信息

    show tables;查看所有的表

改:改名字

    rename table 表名 to 新表名;


*/

创建一个表,学生表(编号,姓名,年龄)

CREATE TABLE student(

sid INT PRIMARY KEY, -- 主键约束

sname VARCHAR(30),

sage INT

);

删除 student表

DROP TABLE student;

查看一个表的详细信息

DESC student;

查看所有的表

SHOW TABLES;

修改表的名字

RENAME TABLE student TO students;

/*

DDL之修改表中的列

    增删改查

增:增加一个列

    alter table 表名 add 列名 类型(长度) [约束]

删:删除一个列

    alter table 表名 drop 列名;

查:查看表的数据结构

    desc 表名;

改:修改列

    可以修改的名字,类型,约束等..

    修改列名:

    alter table 表名 change 旧列名 新列名 类型(长度) 约束; 

    修改列的类型和约束

    alter table 表名 modify 列名 类型(长度) 约束;

    修改表的字符集

    alter table 表名 character set 字符集;(一般不修改)



        


*/

要给students表 添加一列 "电话"

ALTER TABLE students ADD phone VARCHAR(30);

要把students表中 "电话"这一列删除

ALTER TABLE students DROP phone;

查看students表有多少列 分别是什么

DESC students;

修改列名

ALTER TABLE students CHANGE sname NAME VARCHAR(30);

修改列的类型和约束

ALTER TABLE students MODIFY NAME VARCHAR(50);

/*

三个知识点:

1.介绍两个约束

    主键约束: primary key 被主键约束的列必须有唯一,而且不能为空

    自动增长约束:auto_increment 被自动增长约束的列,值可以不用管



2.删除表所有数据的两种方式(面试题)

    delete from 表名;# 删除表的所有数据,但是自动增长值不会重置为1

    truncate  table  表名;# 删除表的所有数据,并且重置自动增长值为1

    truncate的底层,是先摧毁表,然后再重建表

3.乱码问题

    在DOS创建 查询uft8编码的数据库数据时,会出现乱码

    解决方案:

        临时方案:

        set names gbk;//临时地把告诉数据库 我们用gbk来查询

        永久方案:修改 my.ini的配置文件(不建议)

        

            

    




*/

创建一张表,用户(编号,用户名,密码)

CREATE TABLE users(

uid INT PRIMARY KEY AUTO_INCREMENT,# 自动增长默认是从1开始

uname VARCHAR(30),

upass VARCHAR(30)

);

插入数据

INSERT INTO users (uname,upass) VALUES ('王老','123321');

INSERT INTO users (uname,upass) VALUES ('李四','123');

删除表中的所有数据

DELETE FROM users;

INSERT INTO users (uname,upass) VALUES ('王五','1234');

使用truncate删除表中的所有数据

TRUNCATE TABLE users;

INSERT INTO users (uname,upass) VALUES ('赵六','12345');

/*

1.DDL:操作数据库中对象,数据库,表,列

***创建数据库

    create database 数据库名;# 以默认的编码创建数据库

    create database 数据库名 charset 编码名;

    create database 数据库名 character set 编码名;

***创建表

    create table 表名(

        字段1 数据类型(长度) [约束],

        字段2 数据类型(长度) [约束]

        );    

    约束:

        主键约束:primary key,该列的值必须唯一,并且不为空

        自动增长列约束:auto_increment 该列值交给数据库维护

2.DML:操作数据库表中数据,对数据进行增删改

****添加一条记录

    insert into 表名 (列名1.列名2..) values (值1,值2..);

    注意:

        1.列名和后面的值 必须一一对应

        2.(列名1.列名2..) 这里的列名可以写一个或者多个

        3.如果是全列名,可以省略不写

        4.如果值是数字类型的可以不加'',否则必须加上'' 或者 ""

****删除一条记录

    delete from 表名;# 删除表中所有数据,不会重置自动增长值

    truncate table 表名;#删除表所有数据,先把表摧毁再重建

    delete from 表名 where 条件;# 这里条件和查询共用

    

****修改一条记录

    update 表名 set 字段名=值,字段名=值;#表中所有记录的字段都修改了

    update 表名 set 字段名=值,字段名=值 where 条件;# 这里条件和查询共用



3.DQL:操作数据库表中数据,对数据进行查询

***基本查询:

    格式:

    select distinct *|字段1,字段2 from 表名;

***条件查询

    比较条件

        >,<,>=,<=,<>,=

        between xx and xx (含头行尾)

        in (值1,值2)

        like '_a%' 模糊查询

        is null ,is not null 判断空或者不空

    逻辑条件

        与 and

        或 or

        非 not

*/

点滴记录,共同进步。


Starzhang
50 声望4 粉丝